package cn.good.yan.controller.t2;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;


/**
 * 演示：
 *      t2 配置中心 （更改Nacos配置，服务的配置也更改）
 *         需要在 Nacos创建对应的配置文件
 *         例：nacos-order-dev.yaml 在 Data Id这里
 *         然后 更改配置文件，请求该地址：t1 方法
 *         配置文件 Data Id：nacos-order-dev.yml
 *         内容： config:
 *                  info: "cong -v-1 - 默认的-dev"
 *
 * @author shengren.yan
 * @create 2024-01-09
 */
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能
@RestController
@RequestMapping("/k2")
@Slf4j
public class Test2Controller {

    @Value("${config.info}")
    private String configInfo;

    // 这个是其他的配置文件 - 获取多个配置文件
    @Value("${order.id}")
    private String oid;

    // 演示：请求地址：http://localhost:9010/k2/test1，会得到不同的配置文件

    // 模拟 配置中心 - 更改Nacos配置，服务的配置也更改
    // configInfo 的配置，在配置中心里配置
    @GetMapping("/test1")
    public String t1() {
        return oid + "ok:" + configInfo;
    }

    // DataID 上的更改，需要在nacos上配置 Data Id配置 nacos-order-test.yml，配置不同的环境
    public String t2() {
        return "ok:" + configInfo;
    }

    // Group 上的更改，需要在nacos上配置 Data Id配置 nacos-order-info.yml 配置不同的环境
    // 然后 该配置属于某个组下，例：TEST_GROUP，然后在 yml 配置  group: TEST_GROUP   # 指定哪个分组下的配置
    // 这些小分组，可配置，高并发下的 不同环境的配置、正常访问的 不同环境配置、紧急环境的配置、节假日的环境配置
    public String t3() {
        return "ok:" + configInfo;
    }

    // Namespace 上的更改，需要在 nacos上，创建 命名空间  名称是xq，得到：命名空间ID
    // 配置是 namespace: 5415aaf7-a588-43de-b1af-a4a986c07eb1，该命名空间下的 TEST_GROUP组的 dev 环境的配置文件
    public String t4() {
        return "ok:" + configInfo;
    }

}
